package com.meals.system.service;

import com.meals.system.api.user.param.SaveCartItemParam;
import com.meals.system.api.user.param.UpdateCartItemParam;
import com.meals.system.api.user.vo.WhitesMealShoppingCartItemVO;
import com.meals.system.entity.WhitesMealShoppingCartItem;
import com.meals.system.util.PageQueryUtil;
import com.meals.system.util.PageResult;

import java.util.List;

/**
 * Description:
 * Parm:
 * return:
 * Author: Chen
 * Date: 2021/12/11
 */
public interface WhitesMealShoppingCartService {

    // 用户购物车接口

    /**
     * 保存商品
     * @param saveCartItemParam
     * @param userId
     * @return
     */
    String saveWhitesMealCartItem(SaveCartItemParam saveCartItemParam, Long userId);


    /**
     *
     * @param updateCartItemParam
     * @param userId
     * @return
     */
    String updateWhitesMealCartItem(UpdateCartItemParam updateCartItemParam, Long userId);

    /**
     * 获取购物项详情
     * @param cartItemId
     * @return
     */
    WhitesMealShoppingCartItem getWhitesMealCartItemById(Long cartItemId);

    /**
     * 删除购物车商品
     * @param shoppingCartItemId
     * @param userId
     * @return
     */
    Boolean deleteById(Long shoppingCartItemId, Long userId);

    /**
     * 获取我的购物车中的列表数据
     *
     * @param userId
     * @return
     */
    List<WhitesMealShoppingCartItemVO> getShoppingCartItems(Long userId);

    /**
     * 根据userId和cartItemIds获取对应的购物项记录
     * @param cartItemIds
     * @param userId
     * @return
     */
    List<WhitesMealShoppingCartItemVO> getCartItemsForSettle(List<Long> cartItemIds, Long userId);


    /**
     * 我的购物车(分页数据)
     *
     * @param pageUtil
     * @return
     */
    PageResult getShoppingCartItems(PageQueryUtil pageUtil);





}
